Intel PCI Express Gigabit Ethernet Connections for Microsoft Windows CE 6.x
===================================================================
June 30, 2009



Summary
=======

The configuration files provided with the Windows* CE driver enable support 
for single or multiple network interfaces based on the following Intel network devices:
- Intel 82573E Gigabit Ethernet Controller
- Intel 82573L Gigabit Ethernet Controller
- Intel 82573V Gigabit Ethernet Controller
- Intel 82571EB Gigabit Ethernet Controller
- Intel 82572EI Gigabit Ethernet Controller
- Intel 82562GT Gigabit Ethernet Controller
- Intel 82562V Gigabit Ethernet Controller
- Intel 82566DM/DC/MM/MC Gigabit Ethernet Controller





This technical note provides information on installation and configuration. A specific 
example is shown for a 2-port scenario in a single system.



Package Contents
================

e1e51ce6.bib - Binary Image Builder Information File for e1e51ce6.dll driver
e1e51ce6.dll - Windows CE 5.0 driver for Intel PCIe Gigabit Ethernet Controllers
e1e51ce6.reg - Registry merge file for e1e51ce6.dll driver
e1e51ce6.rel - Release file for e1e51ce6.dll driver
e1e51ce6.txt - This support file


Single Network Interface Configuration
======================================

Use an ASCII text editor to read and modify the contents of the E1E51CE6.REG 
file, and merge the content into the platform registry definition file 
PLATFORM.REG. The protocol information should be modified (e.g., different IP
address or gateway) to correspond to your application.

Bindings, routes, and linkages are now handled by the operating system as 
well, eliminating the need to set the linkage and route by hand.  

Set the Platform environment variable CEPB_INTELE1E_PCIE to value 1 to ensure
that the registry section for the new INTEL networking devices is built into 
the registry in the final platform image.


Multiple Network Interface Configuration
========================================

The only things that may need to be modified are the subnet mask, default 
gateway, and IP address, in the case of static IP usage.


Example Configuration for Two Network Interfaces
------------------------------------------------
;*********************BEGIN INTEL PLATFORM.REG ADDITIONS************************

;***MERGE this into your platform.reg file***

; Intel(R) GbE Registry configuration, if enabled
IF CEPB_INTELE1E_PCIE

;Create registry information for Intel(R) Miniport Driver

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Power\State\Suspend\{98C5250D-C29A-4985-AE5F-AFE5367E5006}]
    "Default"=dword:4           ; D4

[HKEY_LOCAL_MACHINE\Comm\E1E51CE6]
   "DisplayName"="Intel(R) Gigabit Ethernet Controller"
   "Group"="NDIS"
   "ImagePath"="E1E51CE6.dll"


;Create registry information for template (will be copied to ALL instances of
;adapters using the Intel Miniport Driver

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\E1E51CE6]
;PCI Bus Enumeration Information
   "Class"=dword:02
   "SubClass"=dword:00
   "ProgIF"=dword:0
   "VendorID"=multi_sz:"8086","8086","8086","8086","8086","8086","8086","8086","8086","8086","8086","8086","8086","8086","8086","8086"
   "DeviceID"=multi_sz:"10BD","294C","108B","108C","109A","105E","105F","107D","107E","1049","104A","104B","104D","10B9","10BA","10A4"
   "Prefix"="NDS"
   "Dll"="NDIS.dll"
   "Entry"="NdisPCIBusDeviceInit"
   "MiniPort"="E1E51CE6"

[HKEY_LOCAL_MACHINE\COMM\PCI\E1E51CE61\PARMS]
    ; Tx and Rx descriptors optimized for vPRO first instance of a device in the above group
    ; May need to be modified for Portage Bay.
    ; Note 100h == 256(decimal) descriptors
    "NumTxDescriptors"=dword:100
    "NumRxDescriptors"=dword:100
    "ChecksumTxIp"=dword:0
    "ChecksumRxIp"=dword:0
    "ChecksumTxTcp"=dword:0
    "ChecksumRxTcp"=dword:0
    "DeviceNumber"=dword:1
    "CeEnableRxMemoryCacheAlignment"=dword:1
    "CeRxMemoryAttributes"=dword:EF

;Settings for DHCP IP Configuration, if enabled
IF DHCP
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\E1E51CE6\TCPIP]
   "EnableDHCP"=dword:1
   ; This should be MULTI_SZ
   "DefaultGateway"=""
   ; Use zero for broadcast address? (or 255.255.255.255)
   "UseZeroBroadcast"=dword:0
   ; This should be MULTI_SZ, the IP address list
   "IpAddress"="0.0.0.0"
   ; This should be MULTI_SZ, the subnet masks for the above IP addresses
   "Subnetmask"="0.0.0.0"
ENDIF ;//DHCP

;Settings for static IP configuration, if enabled
IF STATIC_IP
[HKEY_LOCAL_MACHINE\COMM\PCI\E1E51CE61\Parms\TcpIp]
   "EnableDHCP"=dword:0
   ; This should be MULTI_SZ
   "DefaultGateway"="1.2.3.0"
   ; Use zero for broadcast address? (or 255.255.255.255)
   "UseZeroBroadcast"=dword:0
   ; This should be MULTI_SZ, the IP address list
   "IpAddress"="1.2.3.4"
   ; This should be MULTI_SZ, the subnet masks for the above IP addresses
   "Subnetmask"="255.0.0.0"
ENDIF ;//Static IP


;Add settings for supported 10/100 Phys

[HKEY_LOCAL_MACHINE\Comm\E1E51CE6]
   "DisplayName"="Intel(R) Gigabit Ethernet Controller"
   "Group"="NDIS"
   "ImagePath"="E1E51CE6.dll"


;Create registry information for template (will be copied to ALL instances of
;adapters using the Intel Miniport Driver

[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\E1E51CE6B]
;PCI Bus Enumeration Information
   "Class"=dword:02
   "SubClass"=dword:00
   "ProgIF"=dword:0
   "VendorID"=multi_sz:"8086","8086","8086"
   "DeviceID"=multi_sz:"104C","10C4","10C5"
   "Prefix"="NDS"
   "Dll"="NDIS.dll"
   "Entry"="NdisPCIBusDeviceInit"

;Settings for DHCP IP Configuration, if enabled
IF DHCP
[HKEY_LOCAL_MACHINE\Drivers\BuiltIn\PCI\Template\E1E51CE6B\TCPIP]
   "EnableDHCP"=dword:1
   ; This should be MULTI_SZ
   "DefaultGateway"=""
   ; Use zero for broadcast address? (or 255.255.255.255)
   "UseZeroBroadcast"=dword:0
   ; This should be MULTI_SZ, the IP address list
   "IpAddress"="0.0.0.0"
   ; This should be MULTI_SZ, the subnet masks for the above IP addresses
   "Subnetmask"="0.0.0.0"
ENDIF ;//DHCP

;Settings for static IP configuration, if enabled
IF STATIC_IP
[HKEY_LOCAL_MACHINE\COMM\PCI\E1E51CE6B1\Parms\TcpIp]
   "EnableDHCP"=dword:0
   ; This should be MULTI_SZ
   "DefaultGateway"="1.2.3.0"
   ; Use zero for broadcast address? (or 255.255.255.255)
   "UseZeroBroadcast"=dword:0
   ; This should be MULTI_SZ, the IP address list
   "IpAddress"="1.2.3.4"
   ; This should be MULTI_SZ, the subnet masks for the above IP addresses
   "Subnetmask"="255.0.0.0"
ENDIF ;//Static IP

ENDIF ;//Intel(R) miniport registry additions

;*********************END INTEL PLATFORM.REG ADDITIONS************************

Speed and Duplex setting
=======================

In the default mode, an Intel PRO/100 adapter or Intel Gigabit Network Adapter 
using copper connections will attempt to auto-negotiate with its link partner to 
determine the best setting. If the adapter cannot establish link with the link 
partner using auto-negotiation, you may need to manually configure the adapter 
and link partner to identical settings to establish link and pass packets. 
This should only be needed when attempting to link with an older switch that 
does not support auto-negotiation or one that has been forced to a specific 
speed or duplex mode.

The settings available when auto-negotiation is disabled are:

10 Mbps or 100 Mbps Full duplex (requires a full duplex capable link partner 
set to full duplex). The adapter can send and receive packets at the same time. 
You must set this mode manually (see below).

10 Mbps or 100 Mbps Half duplex (requires a link partner set to half duplex). 
The adapter performs one operation at a time; it either sends or receives. 
You must set this mode manually (see below).


"Forcing to 1 Gigabit is not allowed as per the Gigabit specification"


Configuring Speed and Duplex
============================

Speed and Duplex setting can be changed (forced) by adding Registry key parameter 
"SpeedDuplex"and assigning appropriate data values to it(see e1e51ce6.reg file)
The allowable values are
    "SpeedDuplex"=dword:1   	; 10  Mbps Half duplex
    "SpeedDuplex"=dword:2	; 10  Mbps Full duplex
    "SpeedDuplex"=dword:3	; 100 Mbps Half duplex
    "SpeedDuplex"=dword:4	; 100 Mbps FULL duplex


More information on Speed and Duplex
====================================

"SpeedDuplex" parameter is defined per port. Depending upon the port (eg. port#1 or #2 
in dual port card), the "SpeedDuplex" reg parameter must be set manually in 
e1e51ce6.reg file under port specific system-defined-reg key.

Example 1:
On dual port card, in order to force port#2 to 10 Mbps Half duplex 
update SpeedDuplex value to 0x1 (i.e. SpeedDuplex"=dword:2) under 
section [HKEY_LOCAL_MACHINE\COMM\PCI\E1E51CE62\PARMS] of e1e51ce6.reg file

Example 2:
On dual port card, in order to force port#1 to 10 Mbps Full duplex and port#2 to 100Mbps Full dupex, 
update SpeedDuplex value to 0x2 (i.e. SpeedDuplex"=dword:2) under section 
[HKEY_LOCAL_MACHINE\COMM\PCI\E1E51CE61\PARMS] and update SpeedDuplex value to 0x4 
(i.e. SpeedDuplex"=dword:4) under section [HKEY_LOCAL_MACHINE\COMM\PCI\E1E51CE62\PARMS] 
of e1e51ce6.reg file respectively.





Duplicate Display Naming
========================

When the Display Name ("Intel(R) Gigabit Ethernet Controller") is used for more 
than one network interface, changes cannot be made once the Windows CE image 
is loaded. This behavior is due to a limitation in the OS. Windows CE treats 
adapter settings with identical Display Names as the same. When a change is 
made in the Network Configuration (Control Panel) to one network interface, 
it affects all the others with the same Display Name. When a static IP 
address is used in the Windows CE build, all network interfaces with the same 
Display Name will list the same IP address. The Registry settings will have 
the correct values. This limitation does not apply in a PC development 
platform due to the ability to remove and re-insert a network adapter for the 
changes to take effect.



Legal / Disclaimers
===================

Copyright (C) 2009, Intel Corporation.  All rights reserved.

This file as well as the software described in it is furnished under license 
and may only be used or copied in accordance with the terms of the license. 
The information in this manual is furnished for informational use only, is 
subject to change without notice, and should not be construed as a commitment 
by Intel Corporation. Intel Corporation assumes no responsibility or 
liability for any errors or inaccuracies that may appear in this document or 
any software that may be provided in association with this document. 

Except as permitted by such license, no part of this document may be 
reproduced, stored in a retrieval system, or transmitted in any form or by 
any means without the express written consent of Intel Corporation. 

Information in this document is provided in connection with Intel products. 
No license, express or implied, by estoppels or otherwise, to any intellectual 
property rights is granted by this document. Except as provided in Intel's 
Terms and Conditions of Sale for such products, Intel assumes no liability 
whatsoever, and Intel disclaims any express or implied warranty, relating to 
sale and/or use of Intel products including liability or warranties relating 
to fitness for a particular purpose, merchantability, or infringement of any 
patent, copyright or other intellectual property right. Intel products are 
not intended for use in medical, life saving, or life sustaining 
applications.

Intel Corporation assumes no responsibility for errors or omissions in this 
document. Nor does Intel make any commitment to update the information 
contained herein.
